package Funcionalidades.GestionarFixture;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.Box;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Entidades.EntidadesDTO.CompetenciaDTO;
import Entidades.EntidadesDTO.EncuentroDTO;
import Entidades.EntidadesDTO.ParticipanteDTO;
import Entidades.EntidadesDTO.ResultadoPorPuntuacionFinalDTO;
import Entidades.EntidadesLogica.Competencia;
import Entidades.EntidadesLogica.Encuentro;
import Funcionalidades.Menues.FrameUsuarioAutenticado;
import Funcionalidades.Menues.iDialogGeneral;
import Gestores.GestorCompetencia;
import Gestores.GestorFixture;

import javax.swing.SwingConstants;
import javax.swing.JComboBox;
import javax.swing.BoxLayout;

public class notificarInasistencia extends iDialogGeneral {

	private final JPanel panelDatos = new JPanel();

	private static final long serialVersionUID = 1L;
	
	private int inasistente;
	private Encuentro encuentro;
	private int ronda;
	private JComboBox<String> cbParticipantes;
	private GestorCompetencia gCompetencia;
	private GestorFixture gestFixture;
	private Competencia competencia;
	public notificarInasistencia(FrameUsuarioAutenticado pantallaPrincipal) {
		super(pantallaPrincipal,true);

		Dimension tam= new Dimension(400, 200);
		setTamanio(tam);
		BorderLayout borderLayout = new BorderLayout();
		borderLayout.setVgap(5);
		borderLayout.setHgap(5);
		getContentPane().setLayout(borderLayout);
		
		JPanel panelTitulo = new JPanel();
		FlowLayout flowLayout = (FlowLayout) panelTitulo.getLayout();
		flowLayout.setHgap(0);
		flowLayout.setVgap(4);
		panelTitulo.setMaximumSize(panel);
		getContentPane().add(panelTitulo, BorderLayout.NORTH);
		
		JLabel lblTitulo = new JLabel("Notificar Inasistencia");
		lblTitulo.setFont(new Font("Vani", Font.PLAIN, 20));
		panelTitulo.add(lblTitulo);
		
		JPanel panelCentrar = new JPanel();
		getContentPane().add(panelCentrar, BorderLayout.CENTER);
		
				
		JPanel buttonPane = new JPanel();
		buttonPane.setMaximumSize(this.panel);
		panelCentrar.setLayout(new BoxLayout(panelCentrar, BoxLayout.Y_AXIS));
		panelCentrar.add(panelDatos);
		
		panelDatos.setBorder(new EmptyBorder(5, 5, 5, 5));
		panelDatos.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
		
		JLabel lblSeleccioneElParticipante = new JLabel("Participante que NO se Presento:");
		lblSeleccioneElParticipante.setHorizontalTextPosition(SwingConstants.CENTER);
		lblSeleccioneElParticipante.setHorizontalAlignment(SwingConstants.CENTER);
		panelDatos.add(lblSeleccioneElParticipante);
		
		Component horizontalStrut = Box.createHorizontalStrut(20);
		panelDatos.add(horizontalStrut);
		

		
		cbParticipantes = new JComboBox<String>();
		panelDatos.add(cbParticipantes);
		cbParticipantes.setPreferredSize(datos);
		
		
		Component glue = Box.createGlue();
		panelCentrar.add(glue);
		buttonPane.setLayout(new FlowLayout(FlowLayout.CENTER));
		getContentPane().add(buttonPane, BorderLayout.SOUTH);
		
		JButton okButton = new JButton("Aceptar");
		okButton.setActionCommand("OK");
		buttonPane.add(okButton);
		okButton.setPreferredSize(label);
		okButton.addActionListener(new ActionListener() {
			

			public void actionPerformed(ActionEvent arg0) {
				//inasistente=1 entoncs participante uno falto.. si es 2 el participante 2 falto
				inasistente=cbParticipantes.getSelectedIndex();
				gCompetencia=GestorCompetencia.getGestorCompetencia();
				competencia=gCompetencia.getCompetencia();
				gestFixture=GestorFixture.getGestorFixture();
			
				CompetenciaDTO competenciaDTO=new CompetenciaDTO(competencia.getNombreCompetencia(),competencia.getDeporteAsociado(), competencia.getEstado(), null,competencia.getCreadaPor());
				ParticipanteDTO p_local= new ParticipanteDTO(getEncuentro().getParticipanteLocal().getIdParticipante(), null, null,null);
				ParticipanteDTO p_visitante= new ParticipanteDTO(getEncuentro().getParticipanteVisitante().getIdParticipante(), null, null,null);
//				resultadoPuntosDTO recibe -1 si se carga o el id del resultado que ya se encuentra...
				EncuentroDTO enc=null;
				int numero_encuentro=getEncuentro().getNum_encuentro();
				if(getInasistente()==1)
					enc= new EncuentroDTO(numero_encuentro, null, null, p_local,p_visitante, null, p_local, null, null, null, null);
				else if(getInasistente()==2)
					enc= new EncuentroDTO(numero_encuentro, null, null, p_local,p_visitante, null, null, p_visitante, null, null, null);

				
				try{
					gestFixture.modificarResultado(competenciaDTO, enc, getRonda()+1);
				}
				catch(Throwable t){
					t.printStackTrace();
					System.out.println(t.getMessage());
				}
				
				
				cerrarDialog();
			}
		});
		

		
		Component horizontalStrut3 = Box.createHorizontalStrut(20);
		buttonPane.add(horizontalStrut3);
		
		
		JButton cancelButton = new JButton("Cancelar");
		cancelButton.setActionCommand("Cancel");
		buttonPane.add(cancelButton);
		cancelButton.setPreferredSize(label);
		cancelButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {cerrarDialog();}});
		
	}
	
	public void actualizarCB(Vector<String> resultado, Encuentro encuentro){
		
		resultado.add("");
		resultado.add(encuentro.getParticipanteLocal().getDatosActuales().getNombre());
		resultado.add(encuentro.getParticipanteVisitante().getDatosActuales().getNombre());
		cbParticipantes.setModel(new DefaultComboBoxModel<String>(resultado));
	}



	public void cerrarDialog(){
		getParent().setFocusable(true);
		dispose();
	}

	private Encuentro getEncuentro() {
		return encuentro;
	}

	public void setEncuentro(Encuentro encuentro) {
		this.encuentro = encuentro;
	}

	private int getRonda() {
		return ronda;
	}

	public void setRonda(int ronda) {
		this.ronda = ronda;
	}

	private int getInasistente() {
		return inasistente;
	}

	public void setInasistente(int inasistente) {
		this.inasistente = inasistente;
	}
}